//////////////////////////////////////////////////////////////////////////////////	 
//本程序只供学习使用，未经作者许可，不得用于其它任何用途
//  功能描述   : 1.8寸LCD 4接口演示例程(STM32系列)
//               EC11旋转编码器旋转选择测试的内容
/******************************************************************************
//本程序适用与STM32F103C8
//              GND   电源地
//              VCC   接5V或3.3v电源
//              SCL   接PA4（SCL）
//              SDA   接PA5（SDA）
//              RES   接PA6
//              DC    接PA7
//              CS    接PA8
//							BL		接PA9
//							A    接PA0
//							B    接PA1
//							PUSH    接PA2
//							K0    接PA3
//有任何问题，到淘宝店找客服解决:https://shop63259048.taobao.com/
*******************************************************************************/
#include "../Core/Inc/main.h"

#define RED  	0xf800
#define GREEN	0x07e0
#define BLUE 	0x001f
#define WHITE	0xffff
#define BLACK	0x0000
#define YELLOW  0xFFE0
#define GRAY0   0xEF7D   	//灰色0 3165 00110 001011 00101
#define GRAY1   0x8410      	//灰色1      00000 000000 00000
#define GRAY2   0x4208      	//灰色2  1111111111011111




#define LCD_CTRLA   		GPIOB		//定义TFT数据端口
//#define LCD_CTRLB   	  	GPIOB		//定义TFT数据端口



#define LCD_SCL_PORT    GPIOB    		//PB13 -- SCL/SCK
#define LCD_SCL_PIN     GPIO_PIN_13
#define LCD_SDA_PORT    GPIOB    		//PB15 -- SDA/DIN (MOSI)
#define LCD_SDA_PIN     GPIO_PIN_15
#define LCD_CS_PORT     GPIOB  		//PB14 -- CS/CE
#define LCD_CS_PIN      GPIO_PIN_14

#define LCD_LED_PORT    GPIOB  		//PB7  -- BL/LED
#define LCD_LED_PIN     GPIO_PIN_7
#define LCD_RS_PORT     GPIOB  		//PB6  -- RS/DC
#define LCD_RS_PIN      GPIO_PIN_6
#define LCD_RST_PORT    GPIOB  		//PB5  -- RST
#define LCD_RST_PIN     GPIO_PIN_5

//#define LCD_CS_SET(x) LCD_CTRL->ODR=(LCD_CTRL->ODR&~LCD_CS)|(x ? LCD_CS:0)

//液晶控制口置1操作语句宏定义
#define	LCD_SCL_SET  	HAL_GPIO_WritePin(LCD_SCL_PORT, LCD_SCL_PIN, GPIO_PIN_SET)
#define	LCD_SDA_SET  	HAL_GPIO_WritePin(LCD_SDA_PORT, LCD_SDA_PIN, GPIO_PIN_SET)
#define	LCD_CS_SET  	HAL_GPIO_WritePin(LCD_CS_PORT, LCD_CS_PIN, GPIO_PIN_SET)

    
#define	LCD_LED_SET  	HAL_GPIO_WritePin(LCD_LED_PORT, LCD_LED_PIN, GPIO_PIN_SET)
#define	LCD_RS_SET  	HAL_GPIO_WritePin(LCD_RS_PORT, LCD_RS_PIN, GPIO_PIN_SET)
#define	LCD_RST_SET  	HAL_GPIO_WritePin(LCD_RST_PORT, LCD_RST_PIN, GPIO_PIN_SET)
//液晶控制口置0操作语句宏定义
#define	LCD_SCL_CLR   	HAL_GPIO_WritePin(LCD_SCL_PORT, LCD_SCL_PIN, GPIO_PIN_RESET)
#define	LCD_SDA_CLR   	HAL_GPIO_WritePin(LCD_SDA_PORT, LCD_SDA_PIN, GPIO_PIN_RESET)
#define	LCD_CS_CLR   	HAL_GPIO_WritePin(LCD_CS_PORT, LCD_CS_PIN, GPIO_PIN_RESET)
    
#define	LCD_LED_CLR   	HAL_GPIO_WritePin(LCD_LED_PORT, LCD_LED_PIN, GPIO_PIN_RESET)
#define	LCD_RST_CLR   	HAL_GPIO_WritePin(LCD_RST_PORT, LCD_RST_PIN, GPIO_PIN_RESET)
#define	LCD_RS_CLR   	HAL_GPIO_WritePin(LCD_RS_PORT, LCD_RS_PIN, GPIO_PIN_RESET)



void LCD_GPIO_Init(void);
void Lcd_WriteIndex(int Index);
void Lcd_WriteData(int Data);
void Lcd_WriteReg(int Index,int Data);
int Lcd_ReadReg(int LCD_Reg);
void Lcd_Reset(void);
void Lcd_Init(void);
void Lcd_Clear(int Color);
void Lcd_SetXY(int x,int y);
void Gui_DrawPoint(int x,int y,int Data);
int Lcd_ReadPoint(int x,int y);
void Lcd_SetRegion(int x_start,int y_start,int x_end,int y_end);
void LCD_WriteData_16Bit(int Data);

